home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
comm2
/
zpont311.lha
/
zpoint-3.11
/
Rexx
/
ZPFSR.zprx
< prev
next >
Wrap
Text File
|
1995-03-09
|
10KB
|
353 lines
/*
$VER: ZPFSR.zprx V1.1 (02.03.1995) - Björn Koch
ZPFSR = Zodiac`s Point File Server Requester
Dieses Skript wurde speziell für Zodiac`s Point erstellt, und dient
zum mausgesteuerten Auswahl von Files, die über den ZP-File-Server
bestellbar sind. Dazu muss eine beliebige FileListe vom Server (je
neuer, je besser ;) ) ausgewählt werden, und das Skript gestartet
werden. Findet das Skript in der Mail eine Zeile, die mit den drei
Worten "Name Groesse Datum" und in dieser Reihenfolge beginnt, wird
die Nachricht als eine FileListe anerkannt (mir ist noch kein anderes
Erkennungsmerkmal aufgefallen), und die Auswahl kann beginnen.
Dieses Skript darf beliebig kopieren werden, solange es zusammen mit
Zodiac's Point eingesetzt wird. Veränderungen ohne Erlaubnis des
Autors (außer dem Konfigurationsteil) sind nicht erlaubt.
Hinweise zur Installation:
WICHTIG: Diese Skript benötigt UNBEDINGT folgende Libraries:
- rexxtricks.library (- by Jürgen Kohrmeyer)
- RexxReqTools.library (- by Rafael D`Halleweyn)
Einfach dieses Skript in das Rexx-Verzeichnis von ZP kopieren, die
Feinabstimmung vornehmen und auf Wunsch die Zeile
"F1:SYS:Rexxc/rx ZP:Rexx/ZPFSR.zprx %s"
in die Datei 'fkeys.zp' einfügen.
Nähere Angaben zu der Datei 'fkeys.zp' sind in der Guide-Datei zu
Zodiac`s Point zu finden.
Die Benutzung und Installation dieses Skriptes erfolgt auf eigene
Gefahr, und der Autor übernimmt keine Haftung für eventuelle Schäden
jeder Art, die durch die Benutzung oder Installation erstanden sind
oder entstehen können.
Für Anregungen, Fehlermeldungen und Verbesserungsvorschläge ist der
Autor sehr dankbar und wie folgt zu erreichen:
Björn Koch H.Humpel@NOSTLGIC.oche.de
*/
/* Die Feinabstimmung: (Beginn Konfigurationsteil) */
FSAdresse = "J.RITZERFELD@darkness.gun.de" /* File-Server */
FSListen = "Files" /* Ein typisches Betreff-Erkennungsmerkmal */
FSBestell = "SENDUU" /* Aufforderung zum Senden (SEND oder SENDUU) */
ReqFont = "SCREEN" /* Der Font für den requester (SCREEN oder DEFAULT) */
ListeStart1 = "Name" /* An diesen drei Eintraegen in einer */
ListeStart2 = "Groesse" /* Zeile erkennt das Skript die File-Liste */
ListeStart3 = "Datum" /* ... solange dies nicht geändert wird ;) */
TemporaerDatei = "T:Tempdatei.zp" /* Die übliche Schmierdatei */
ArchivIt = 0 /* Soll die Bestellung archiviert werden ? */
CheckVer = 0 /* Sollen ein Vorhandensein ueberprueft werden? */
/* ACHTUNG!!! Noch im BETA-Stadium!! */
ZPTools = "ZP:Tools/" /* Hier liegen die Tools (an den / oder den : denken!) */
ZPRexx = "ZP:Rexx/" /* Hier liegt alles für ZPoint und Rexx */
/* AB HIER BITTE NICHTS MEHR ÄNDERN!!! (Ende Konfigurationsteil) */
OPTIONS RESULTS
PARSE ARG ZPPort
IF ZPPort == "" THEN
ZPPort = 'ZPoint'
ADDRESS VALUE ZPPort
IF (~SHOW('LIBRARIES', 'rexxtricks.library')) THEN
IF (~ADDLIB('rexxtricks.library', 0, -30, 0)) THEN DO
requestnotify 'Kann rexxtricks.library nicht öffnen!'
EXIT
END
IF (~SHOW('LIBRARIES', 'rexxreqtools.library')) THEN
IF (~ADDLIB('rexxreqtools.library', 0, -30, 0)) THEN DO
requestnotify 'Kann rexxreqtools.library nicht öffnen!'
EXIT
END
NL = '0A'x
Bestellt = 0
ListeStart1 = UPPER(ListeStart1)
ListeStart2 = UPPER(ListeStart2)
ListeStart3 = UPPER(ListeStart3)
ScreenTag = 'rt_pubscrname='||ZPPort
ReqFont = UPPER(ReqFont)
IF ((ReqFont ~= 'SCREEN') & (ReqFont ~= 'DEFAULT')) THEN
ReqFont = 'DEFAULT'
WHICHLEVEL
Level=RESULT
IF Level ~= "BOARD" THEN DO
REQUESTNOTIFY " Dieses Skript arbeitet nur, wenn Du in einem Brett bist!!"
EXIT
END
MESSAGEINFO AUTHOR
Autor = RESULT
MESSAGEINFO FULLSUBJECT
Betreff = RESULT
ret = 0
IF ~(MATCHPATTERN(Autor,FSAdresse||'#?') & MATCHPATTERN(Betreff,'#?'||FSListen||'#?')) THEN DO
Inhalt = ' Diese Mail scheint NICHT vom File-Server zu sein !!'
Titel = 'Was nun ??'
ret = rtezrequest(Inhalt,'Dann nicht!|Egal!! Weiter!',Titel,ScreenTag)
END
IF (ret = 0) THEN DO
SAVEMESSAGEBODY TemporaerDatei
CALL BildeListe
IF (Gehtlos = 0) THEN
REQUESTNOTIFY " Diese Mail scheint keine FileListe zu sein !! "
ELSE DO
IF (j >= 1) THEN DO
Inhalt = ' Es wurden '||j||' neue Dateien gefunden.'||NL
Inhalt = Inhalt||' Direkt durchschauen ?'
ret = rtezrequest(Inhalt,'Klar!!|Noe...',' Es gibt was neues :)',ScreenTag)
IF (ret = 1) THEN
CALL NeueErst
Inhalt = ' Soll auch was von den älteren Files bestellt werden ??'
ok = rtezrequest(Inhalt,'Klaaaar!|Muss nicht sein!','Alt, aber nützlich...',ScreenTag)
END
DO WHILE (ok ~= 0)
CALL Auswahl
END
CALL MakeBestellDatei
END
ADDRESS COMMAND
IF Exists(TemporaerDatei) THEN
'delete >NIL:' TemporaerDatei
END
EXIT
/* Die Unterroutinen... */
BildeListe: /* Liste auswerten */
CALL Open('ListDatei',TemporaerDatei,'R')
Zeile = ReadLn('ListDatei')
Gehtlos = 0
DO WHILE(~EOF('ListDatei') & (Gehtlos=0))
Zeile = UPPER(Zeile)
IF (Word(Zeile,1) = ListeStart1) THEN
IF (Word(Zeile,2) = ListeStart2) THEN
IF (Word(Zeile,3) = ListeStart3) THEN
Gehtlos = 1
Zeile = ReadLn('ListDatei')
END
DO WHILE(~EOF('ListDatei') & (Zeile = ""))
Zeile = ReadLn('ListDatei')
END
IF (Gehtlos = 1) THEN DO
Listeende = 0
i = 0
j = 0
DO WHILE (Listeende = 0)
k = 1
IF Word(Zeile,k)='*' THEN DO
Neu.j = i
j = j+1
k = k+1
END
Name.i = Word(Zeile,k)
Groesse.i = Word(Zeile,k+1)
Datum.i = Word(Zeile,k+2)
Zeile = ReadLn('ListDatei')
IF (Right(Word(Zeile,1),1)=';') THEN
CALL MakeVer
ELSE DO
Text.i = Strip(Zeile,'L',' ')
Ver.i = '???'
END
Zeile = ReadLn('ListDatei')
IF Zeile ~= "" THEN
CALL MehrZeilen
ELSE DO
Zeile = ReadLn('ListDatei')
IF Zeile ="" THEN
Listeende = 1
ELSE DO
i = i+1
END
END
END
END
CALL Close('ListDatei')
RETURN
MakeVer: /* Versions-String ausshneiden */
Ver.i = Word(Zeile,1)
Ver.i = Strip(Ver.i,'T',';')
Zeile = DelWord(Zeile,1,1)
Text.i = Strip(Zeile,'L',' ')
RETURN
MehrZeilen: /* Die Beschreibung geht über mehrere zeilen */
Text.i = Text.i||' '||Zeile
Zeile = ReadLn('ListDatei')
IF Zeile ~= "" THEN
CALL MehrZeilen
RETURN
NeueErst: /* Zuerst die neuen Dateien abfragen */
l = 0
DO WHILE (l<j)
k = Neu.l
CALL InfoReq
l = l+1
END
RETURN
Auswahl: /* Der Auswahlrequester */
Name.count = i
fenster.title = 'Die Qual der Wahl......'
fenster.postext = 'Zur Auswahl'
fenster.negtext = 'Genug jetzt!'
fenster.pubscreen = ZPPort
fenster.font = ReqFont
fenster.sort = 'TRUE'
ok = VIEWLIST(Name,'fenster',NName)
IF (ok ~= 0) THEN DO
x = 0
k = 0
DO WHILE(x < NName.count)
DO WHILE(NName.x ~= Name.k)
k = k+1
END
CALL InfoReq
x = x+1
k = 0
END
END
RETURN
InfoReq: /* Dateivorstellung */
NamText = ' Name : '||Strip(Name.k,'L','+')||NL
GroeText = ' Größe : '||Groesse.k||' Bytes'||NL
DatText = ' Datum : '||Datum.k||NL
VerText = ' Version: '||Ver.k||NL
TexText = NL||Text.k||NL
DatNam = Strip(Name.k,'L','+')
SuchVerz = ZPRexx
Datei = SuchVerz||DatNam
IF ~EXISTS(Datei) THEN DO
SuchVerz = ZPTools
Datei = SuchVerz||DatNam
IF ~EXISTS(Datei) THEN
BemText = NL||NL||' Diese Datei scheint noch nicht vorhanden zu sein !!'||NL
END
ELSE DO
BemText = NL||NL||' Diese Datei wurde im '||SuchVerz||' -Verzeichnis gefunden !!'
IF (CheckVer = 1) THEN DO
ADDRESS COMMAND
'version >T:Ver.temp ' Datei' FILE FULL'
IF (RC=0) THEN DO
CALL Open('VerDatei','T:Ver.temp','R')
DatVer = ''
DO WHILE ~EOF('VerDatei')
DatVer = DatVer||ReadLn('VerDatei')||NL
END
BemText = BemText||NL||' Versions-String des Files:'||NL||NL||DatVer
CALL Close('VerDatei')
END
ELSE
BemText = BemText||NL||' Keine Versionsangabe zu <'||Datei||'> zu finden!!'
'delete >NIL: T:Ver.temp'
ADDRESS ZPPort
END
END
Inhalt = NamText||GroeText||DatText||VerText||TexText||BemText
IF(Left(Name.k,1)='+') THEN
CALL InfoPos
ELSE
CALL InfoNeg
RETURN
InfoPos: /* Datei bereits bestellt */
Frage = NL||NL||'Diese Datei ist bereits zum Bestellen markiert !!'||NL
Frage = Frage||' Soll sie doch nicht bestellt werden ???'
Inhalt = Inhalt||Frage
Wahl = 'Upps!!|Neee.. will ich doch nicht'
Titel = 'Das kommt mir bekannt vor...'
ret = rtezrequest(Inhalt,Wahl,Titel,ScreenTag)
IF (ret = 0) THEN DO
Name.k = Strip(Name.k,'L','+')
l = 1
DO WHILE((l <= Bestellt) & (Name.k ~= Best.l))
l = l+1
END
DO WHILE(l < Bestellt)
ll = l+1
Best.l = Best.ll
l = l+1
END
Bestellt = Bestellt-1
END
RETURN
InfoNeg: /* Datei noch nicht bestellt */
Frage = NL||NL||'Soll ich diese Datei bestellen ???'
Inhalt = Inhalt||Frage
Wahl = 'Aber immer doch!|Hmmm.. weniger'
Titel = 'Die ZP-Toolsverwaltung empfiehl:'
ret = rtezrequest(Inhalt,Wahl,Titel,ScreenTag)
IF (ret = 1) THEN DO
Bestellt = Bestellt+1
Best.Bestellt = Name.k
Name.k = Insert('+',Name.k)
END
RETURN
MakeBestellDatei: /* Erstelle die Bestellliste */
IF (Bestellt = 0) THEN
RETURN
CALL Open('DummyDatei',TemporaerDatei,'W')
l=1
DO WHILE (l <= Bestellt)
Erfolg = WriteLn('DummyDatei',Best.l)
l = l+1
END
CALL Close('DummyDatei')
IF (ArchivIt = 1) THEN
FSBestell = FSBestell||" ARCHIVE"
WRITEMESSAGE TemporaerDatei RECEIVER FSAdresse SUBJECT FSBestell
RETURN
/* ... und ENDE! */